package MapDemo;

import List.Person;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class MapTest2 {
    /**
     * 1）创建HashMap集合的对象map,String和ArrayList<Person>分别作为key和value的泛型；
     * 2）先创建内部集合ArrayList<Person>的对象list1,使用对象list1调用add函数向ArrayList集合中添加两个匿名对象作为HashMap的value，对应的key是篮球；
     * 3）和上述做法一样，分别向ArrayList集合中添加对应key值为足球和乒乓球的value；
     * 4）创建完成后，使用map对象调用put函数将创建集合按照对应的key值依次添加到HashMap中；
     * 5）开始遍历集合，从外向里遍历，使用map对象调用keySet()函数获取key值存放到Set<String>集合中；
     * 6）迭代Set<String>集合获取key值，输出key值，同时根据key值获取对应的value值保存到ArrayList<Person>中；
     * 7）在遍历ArrayList<Person>集合，输出运动员的姓名和年龄；
     */
    public static void main(String[] args) {
        HashMap<String, ArrayList<Person>> map = new HashMap<String, ArrayList<Person>>();
        ArrayList<Person> list1 = new ArrayList<Person>();
        list1.add(new Person("乔丹", 50));
        list1.add(new Person("邓肯", 54));

        ArrayList<Person> list2 = new ArrayList<Person>();
        list2.add(new Person("梅西", 50));
        list2.add(new Person("C罗", 54));

        ArrayList<Person> list3 = new ArrayList<Person>();
        list3.add(new Person("马龙",27));
        list3.add(new Person("张继科",25));
        map.put("篮球", list1);
        map.put("足球", list2);
        map.put("乒乓球", list3);
        System.out.println(map);
        Set<String> keys = map.keySet();
        System.out.println(keys);
        for (Iterator<String> it = keys.iterator(); it.hasNext();) {
            String key = it.next();
            //输出key值
            System.out.println(key);
            //根据key获得value
            ArrayList<Person> value = map.get(key);
            //迭代ArrayList集合
            for (Iterator<Person> it2 = value.iterator(); it2.hasNext();) {
                Person p =  it2.next();
                //输出value值
                System.out.println("\t"+p.getName()+"-"+p.getAge());
            }
        }
    }
}
